#
# Copyright (C) 2016 The Android Open Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#      http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
"""Defines API for presenting desktop notifications."""
from __future__ import absolute_import

import subprocess
from typing import Optional


def toast(subject: str, body: Optional[str] = None) -> None:
    """Presents a brief popup notification.

    Currently this is only implemented for systems with libnotify-bin installed
    (Ubuntu seems to have this by default). If not present, the function simply
    does nothing.

    Args:
        subject: Subject text to display.
        body: Optional additional text to display.
    """
    try:
        args = ["notify-send", subject]
        if body is not None:
            args.append(body)
        subprocess.call(args)
    except OSError:
        pass
